Conventionally, a microprocessor is secured by an address control system which determines that the program being executed is entitled to address certain memory zones for read, write, jump or call operations. A system of this kind generally includes a rights allocation table that receives an identification code of the program being executed at a first input, and an identification code of the memory zone being addressed at a second input. The memory zone corresponds to the current address present at the address bus of the microprocessor. If it is planned in the table that the memory zone being addressed is to be accessible to the program being executed, the table delivers an authorization signal. If not, the table does not deliver the authorization signal and an address violation signal is sent.
An address control system of this kind is used to obtain the secured cohabitation of various programs in the memory array of a microprocessor by allocating different rights to each of the programs. These various programs generally correspond to different applications of the microprocessor that have been planned by the manufacturer.
The securing of a microprocessor, however, has a negative effect on the organization of the memory array in that it partitions the memory array into various mutually “sealed” parts, with each part being reserved for one application. It often happens that programs designed for different applications comprise similar computation steps that could be centralized in a common zone referred to as a library. The library designates one or more sub-programs shared by several programs, as readily understood by those skilled in the art.
This standard method of the centralization in library form of program parts common to several programs is generally prohibited with the secured microprocessors because of the problems of security that it causes. For example, let us assume that a program PGA enjoys rights to access a zone X of a memory array and that a program PGB enjoys rights to access a zone Y distinct from zone X. The designing of a sub-program shared by the programs PGA and PGB leads to the question of finding out which are the rights to be conferred on the sub-program. If the sub-program has to be able to read or write data in the zone X when it is called by the program PGA and to read or write in the zone Y when it is called by the program PGB, the sub-program must be given the total rights of the programs PGA and PGB, i.e., namely rights on the zone X and on the zone Y.
However, the program PGB or a fraudulent program loaded in the location of the program PGB could use the sub-program to access the zone X reserved for the program PGA and vice versa. The designing of a sub-program shared by two programs having different rights of access to the memory array is therefore a breach in the partitioning of the memory array.